<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    protected $table='category';
    protected $primaryKey='cat_id';
    public $timestamps = false;
    protected $guarded =[]; //排除空值

//    静态的处理方式
//    public static function tree()
//    {
//        $categorys = Category::all();       //获取全部信息
//        //测试 dd($categorys);
//        //获取分类树
//        // $data=$this->getTree($categorys,'cat_name','cat_id','cat_pid');   //获取分类树
//        //获取分类树,返回给控制器
//        //静态方法：
//        return (new Category)->getTree($categorys,'cat_name','cat_id','cat_pid');
//
//    }


    //静态的话要加static
    public function tree()
    {
        $categorys = $this->orderBy('cat_order','asc')->get();
        //$categorys = $this->all();       //获取全部信息
        //测试 dd($categorys);
        //获取分类树
    //    $data=$this->getTree($categorys,'cat_name','cat_id','cat_pid');   //获取分类树
        //获取分类树,返回给控制器
     //静态方法：
        //    return (new Category)->getTree($categorys,'cat_name','cat_id','cat_pid');
       return $this->getTree($categorys,'cat_name','cat_id','cat_pid');
    }
    
    
    //树形结构
    //@param $data 传入并最后返回的数组
    // @param $field_id 分类id
    // @param $field_pid 父分类ID
    // @param $pid 顶级分类ID，默认0

    public function getTree($data,$field_name,$field_id='id',$field_pid='pid',$pid=0)
    {
        //测试数据打印      dd($data);
        //新建一个数组，重组要打印的数据
        $arr=array();
        foreach ($data as $k=>$v){
            //顶级目录
            if($v->$field_pid==$pid) {
                // echo $v['cat_name'];
                $data[$k]['_'.$field_name] = ' '.$data[$k][$field_name];  //父分类
                $arr[] = $data[$k];
                //剩下的进行匹配母目录
                foreach ($data as $m=>$n){
                    if($n->$field_pid==$v->$field_id){
                        $data[$m]['_'.$field_name] = '├─'.$data[$m][$field_name];     //新增自定义字段【用于增加子父分类的样式区分】
                        $arr[] =  $data[$m];
                    }
                }
            }
        }
        //dd($arr);
        return $arr;    //返回给页面
    }
}
